// ... 保留原有导入和结构体定义 ...

type LoadForecaster struct {
	histCoeffs    []float64
	realTimeModel *regression.Regression
	lastRealValue float64
	seasonal      bool      // 新增：季节性标志
	dynamicWeight float64   // 新增：动态权重
	lastMAE       float64   // 新增：记录上次预测误差
}

// 新增：带配置参数的构造函数
func NewLoadForecaster(seasonal bool, initWeight float64) *LoadForecaster {
	return &LoadForecaster{
		realTimeModel: new(regression.Regression),
		seasonal:      seasonal,
		dynamicWeight: initWeight,
	}
}

// 新增：季节性检测方法
func (lf *LoadForecaster) detectSeasonality(data []float64) bool {
	// 使用傅立叶变换检测季节性
	var spectralDensity []float64
	// ... 频谱分析实现 ...
	return len(spectralDensity) > 0 && spectralDensity[0] > 0.5
}

// 修改后的训练方法
func (lf *LoadForecaster) TrainHistorical(historicalData []float64) {
	if lf.seasonal {
		// 使用季节性分解
		seasonal, trend := lf.decompose(historicalData)
		// ... 分别训练季节性和趋势成分 ...
	} else {
		// 原有线性回归实现
		// ... 
	}
	
	// 新增：计算初始预测误差
	lf.calculateInitialError(historicalData)
}

// 新增：动态权重调整方法
func (lf *LoadForecaster) adjustWeight(actual, predicted float64) {
	// 根据预测误差调整权重
	error := math.Abs(actual - predicted)
	lf.dynamicWeight = 0.9*lf.dynamicWeight + 0.1*(1-error/actual)
}

// 修改后的预测方法
func (lf *LoadForecaster) Predict(steps int) []float64 {
	// ... 原有预测逻辑 ...
	
	// 使用动态权重替代固定权重
	combined[i] = lf.dynamicWeight*histPred[i] + (1-lf.dynamicWeight)*rtPred[i]
	
	// 新增：记录预测值用于后续调整
	lf.lastPredictions = combined
	return combined
}

// 新增：模型评估方法
func (lf *LoadForecaster) Evaluate(actual []float64) (mae, rmse float64) {
	// 计算平均绝对误差和均方根误差
	// ...
	return
}